

import axios from 'axios'
import global from '../router/global';
import qs from 'qs'

import { baseUrl, pcUrl } from '../config/env'


axios.defaults.withCredentials = true; // http rquest 跨域
axios.defaults.timeout = 6000;
//axios.defaults.maxRedirects = 10;
axios.defaults.retry = 2;
axios.defaults.retryDelay = 1000;
axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';

axios.defaults.params = { 'r_key': global.r_key(), 'p_key': global.p_key() }
//axios.defaults.baseURL = '/api/v1/';   // 配置接口地址


// POST传参序列化
axios.interceptors.request.use((config) => {
    if (config.method === 'post') {

       /*  if(config.data.toString() == '[object FormData]'){
            console.log('yes')
        } */

        //超时后防止再二次转码.
        if (typeof (config.data) == 'object' && config.data != '' && config.data.toString()!= '[object FormData]'){
            config.data = qs.stringify(config.data);
            //console.log(config.data);
        }
    }
    return config;
}, (error) => {
    return Promise.reject(error);
});

/* 添加响应拦截器*/
axios.interceptors.response.use(function (response) {
    return response;
}, function (error) {

    if (error.code == 'ECONNABORTED' && error.message.indexOf('timeout') != -1) {
        let config = error.config;

        config.__retryCount = config.__retryCount || 0;

        if (config.__retryCount >= config.retry) {
            // Reject with the error
            // window.location.reload();
            return Promise.reject(error);
        }

        // Increase the retry count
        config.__retryCount += 1;

        // Create new promise to handle exponential backoff
        let backoff = new Promise(function (resolve) {
            setTimeout(function () {
                resolve();
            }, config.retryDelay || 1);
        });

        return backoff.then(function () {
            return axios(config);
        });
    } else {
        return Promise.reject(error);
    }

});



// 返回一个Promise
export function fetch(url, params = {}, type = "GET", point = 'mobile', timeout = 6000, direct = false) {
    type = type.toUpperCase();
    //url = baseUrl + url;

    if (!direct){
        if(point == 'pc')
            url = pcUrl + url;
        else
            url = baseUrl + url;
    }


    return new Promise((resolve, reject) => {
        if (type == 'GET') {



            let dataStr = ''; //数据拼接字符串
            Object.keys(params).forEach(key => {
                dataStr += key + '=' + params[key] + '&';
            })

            if (dataStr !== '') {
                dataStr = dataStr.substr(0, dataStr.lastIndexOf('&'));
                url = url + '&' + dataStr;
            }



            axios.get(url, { timeout: timeout })
                .then(response => {
                    resolve(response.data);
                }, err => {
                    reject(err);
                })
                .catch((error) => {
                    reject(error)
                })
        } else {

            //console.log(params)
            axios.post(url, params, { timeout: timeout })
                .then(response => {
                    resolve(response.data);
                }, err => {
                    reject(err);
                })
                .catch((error) => {
                    reject(error)
                })

        }

    })
}

//export const c_borrow_list = API_ROOT + '/index.php?s=/Home/Borrow/borrowLists.html'
// 房利宝列表
//export const Api_Group_List = API_ROOT + '/index.php?s=/home/home/financialManagement&t=' + Math.random()

//api.p2p.com / index.php ? s = /Home/Users / c
export default {

    news:{
        // 资讯详情  id=183
        //export const c_article_detail = API_ROOT + '/index.php?s=/Home/Article/detail.html'
        detail(params){
            return fetch('/Article/detail.html', params);
        },

        typelist() {
            return fetch('/Article/getColumn.html');
        }

    },
    invest:{
        //export const c_withdraw_record = API_ROOT + '/index.php?s=/Home/Users/cashList.html'




        redpack(params){
            return fetch('/Activity/tender_select.html', params, "POST", 'mobile', 10000);
        },
        // 投标
        //export const Api_Tender = API_ROOT + '/index.php?s=/Home/HXBank/tender.html'
        tender(params){
            return fetch('/HXBank/tender.html', params, "POST", 'mobile', 10000);
        },
        // 投标理财（列表  详情
        //export const c_borrow_detail = API_ROOT + '/index.php?s=/Home/Borrow/borrowList.html'
// page:当前页 number:每页显示数量（不传递该参数时默认15）
// name_no:（查询拆标列表）borrow_nid:（详情页时传递）


        //export const c_order_detail_loan = API_ROOT + '/index.php?s=/Home/Borrow/loanInfo.html'

        // 标的详情 - 还款信息
        loan_info(params) {
            return fetch('/Borrow/loanInfo.html', params, "POST", 'mobile', 10000);
        },


        loan_repay_info(params) {
            return fetch('/Borrow/loanInfo.html', params);
        },

        //投标理财（列表  详情
        loan_detail(params) {
            return fetch('/Borrow/borrowList.html', params);
        },

        //房利宝
        group_list(params){
            return fetch('/home/financialManagement', params);
        },

        //投标理财
        loan_list(params){
            return fetch('/Borrow/borrowLists.html', params);
        }
    },

    com: {

        /* bank_info(params){
            return fetch('https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardNo=' + params.no +'&cardBinCheck=true', {}, 'GET', 'mobile', 10000, true);
        }, */

        //首页信息
        index(){
            return fetch('/Index/indexList.html');
        },

        wechat(params) {
            return fetch('/Index/getWxData.html', params, "POST")
        },


    },

    about: {

        //获取所有合作伙伴列表
        get_partner_list(params) {
            return fetch('/Article/getpartner.html' ,params)
        },

        //获取合作伙伴详情
        get_partner_detail(params) {
            return fetch('/Article/partner_detail.html', params)
        }
    },

    user: {
        // 注册验证码
        //export const Api_Reg_Code = API_ROOT + '/index.php?s=/Home/Users/sendVCode.html'
        withdraw_record(params){
            return fetch('/Users/cashList.html', params, "GET", 'mobile', 10000);
        },



        reg(params){
            return fetch('/Users/register.html', params, 'POST', 'mobile', 10000);
        },


        send_reg_code(params) {
            return fetch('/Users/sendVCode.html', params, 'POST', 'mobile', 10000);
        },


        get_redpack(params) {
            return fetch('/Activity/getAllByUid.html', params, 'POST', 'mobile', 10000);
        },


        binding_card(params) {
            return fetch('/HXBank/bind.html', params, "POST", 'mobile', 10000);
        },

        go_change_card() {
            return fetch('/HXBank/update_bind.html', {}, 'GET', 'mobile', 10000);
        },


        set_bink_info() {
            return fetch('/HXBank/bink_info.html', {}, 'GET', 'mobile', 10000);
        },

        get_bank_info() {
            return fetch('/Users/getBinkInfo.html', {}, 'GET', 'mobile', 10000);
        },

        get_hx_bank_info() {
            return fetch('/HXBank/bankInfo.html', {}, 'GET', 'mobile', 10000);
        },

        add_bank_account(params) {
            return fetch('/Users/setUsersBank.html', params, "POST", 'mobile', 10000);
        },

        send_phone_code(params){
            return fetch('/Users/sendBackPwdCode.html', params, "POST", 'mobile', 10000);
        },

        invest_contract(params){
            return fetch('/Borrow/down_contract.html', params, "POST", 'mobile', 10000);
        },


        delete_user(params) {
            return fetch('/Users/cancel.html', params, "POST", 'mobile', 10000);
        },
        /*
        参数
        remark	   	##注销理由
        phone		##手机号
        password	##手机密码
        valicode	##验证码 */

        // 开启自动投标
        //export const Api_Set_Auto = API_ROOT + '/index.php?s=/Home/HXBank/autoTender.html'

        // 获取自动投标参数
        //export const Api_Get_AutoBuy = API_ROOT + '/index.php?s=/Home/Users/getAuto.html'
        get_reg_days(){
            return fetch('/Users/getRegDay.html');
        },

        get_auto_buy() {
            return fetch('/Users/getAuto.html');
        },


        //开启自动投标
        set_auto_buy() {
            return fetch('/HXBank/autoTender.html', {}, "POST", 'mobile', 10000);
        },


       get_entruste(params) {
            return fetch('/HXBank/entruste.html', params, 'POST', 'mobile', 10000);
        },

        /* ##借款人法大大信息
        http://devapp.uximoney.com/index.php?s=/Home/Fadd/borrowUsers.html

        返回数据
        data.user_id	用户ID；
        data.borrow_c_id	关联公司id
        */
        //借款人法大大信息
        get_borrowUsers() {
            return fetch('/Fadd/borrowUsers.html', {}, 'GET', 'mobile', 10000);
        },

        //获取收款人列表和报单专员列表
        get_selectList(params) {
            return fetch('/Borrow/do_selectList.html', params, "POST", 'mobile', 10000);
        },


        // 借款人账户中心
        //export const c_user_loan = API_ROOT + '/index.php?s=/home/Users/getBorrowerInfo.html'
        get_BorrowerInfo() {
            return fetch('/Users/getBorrowerInfo.html', {}, "GET", 'mobile', 10000);
        },



        //获取用户报单信息
        get_loanList(params) {
            return fetch('/Borrow/do_loanList.html', params, "POST", 'mobile', 10000);
        },

        /* http://devapp.uximoney.com/index.php?s=/Home/Fadd/do_loanList.html

        status = true 		正常
        list.name_no		合同号
        list.addtime		申请时间
        list.account		借款金额
        list.borrow_period	借款期限
        list.status		0审核中，1借款中，3满标放款，6撤标
        list.entrust_pay	受托支付状态 0：未请求，1：请求中，2：成功, 3: 错误 ，4 ：未知
        list.borrow_nid		借款号 */



        do_addBorrow(params) {
            return fetch('/Borrow/do_addBorrow.html', params, "POST", 'mobile', 10000);
        },
        //http://devapp.uximoney.com/index.php?s=/Home/Fadd/do_addBorrow.html
        /* 参数:
        money		借款金额
        period		借款期限
        payee_uid 	收款人
        bd_user		报单专员
        返回状态
        status	 true 	正常
        msg		提示 */


        //法大大处理器
        fadada_return_processor(params){
            return fetch('/Fadd/fadd_return.html', params,  'POST', 'mobile', 10000);
        },


        //担保人信息， 看是否可以修改
        //http://devapp.uximoney.com/index.php?s=/Home/Fadd/guarUser.html
        warrantor_info() {
            return fetch('/Fadd/guarUser.html');
        },


        /* stats = true 有数据，false无数据
        data.type =   2	公司，1个人
        data.name =  个人或公司名字
        data.name =  个人身份证或企业名字
        data.email=  邮箱地址，只有公司才有
        data.verify_status 审核状态，状态为1，无法修改，0可以修改
        data.auto_status 1 自动授权完成
        data.open_status 1 开通自动签章完成 */


        //担保人自动投资授权
        warrantor_contract_permit() {
            return fetch('/Fadd/extsign_guar.html', {},  'GET', 'mobile', 10000);
        },


        //担保人申请签章
        warrantor_sign_contract(params) {
            return fetch('/Fadd/syncPerson_guar.html', params,  'POST', 'mobile', 10000);
        },
        /* post数据：
        type	= 1个人，2企业
        c_id	= 下拉渠道id     必须参数
        name	= 企业名称	##企业时，必须，个人时不需要；
        idcard	= 企业编码	##企业时，必须，个人时不需要；
        email	= 邮箱地址	##企业时，必须，个人时不需要；
        file	= 企业营业执照  ##企业时，必须，个人时不需要； */


        borrower_info() {
            return fetch('/Fadd/borrowUser.html');
        },



        //借款人自动投资授权
        borrower_contract_permit() {
            return fetch('/Fadd/extsign_borrow.html', {},  'GET', 'mobile', 10000);
        },



        //借款人申请签章 需要资料，但只做展示，不作修改。
        borrower_sign_contract(params) {
            return fetch('/Fadd/syncPerson_borrow.html', params, "POST", 'mobile', 10000);
        },


        //投资人自动投资授权
        investor_contract_permit() {
            return fetch('/Fadd/extsign_tender.html', {},  'GET', 'mobile', 10000);
        },

        //投资人申请签章
        investor_sign_contract() {
            return fetch('/Fadd/syncPerson_tender.html', {}, 'POST', 'mobile', 10000);
        },

        //担保人 借款人 渠道下拉列表
        get_fadd_channel() {
            return fetch('/Fadd/channelAll.html');
        },


        //法大大用户信息接口   借款人 和 担保人 使用
        fadada_basic_info() {
            return fetch('/Fadd/getUsersInfo.html');
        },

        //法大大状态 弹窗控制接口
        get_contract_status(){
            return fetch('/Fadd/control_window.html');
        },

        //获取法大大/借款人/担保人 所有状态
        get_contract_all_status(){
            return fetch('/Fadd/u_status.html');
        },





        //个人信息
        info(){
            return fetch('/Users/center.html', {}, 'GET', 'mobile', 10000);
        },

        //验证旧手机验证码
        send_sms_by_verify_original_phone(params) {
            return fetch('/Users/old_phone_sms.html', params, 'POST')
        },

        //验证原来手机
        verify_original_phone(params) {
            return fetch('/Users/confirm_old_phone.html', params, 'POST')
        },

        //修改手机的验证码
        send_sms_by_verify_new_phone(params) {
            return fetch('/Users/new_phone_sms.html', params, 'POST')
        },

        //修改手机
        update_phone(params) {
            return fetch('/Users/user_edit_phone.html', params, 'POST')
        },


        //图形验证码
        verifyImg() {
            return baseUrl + '/Users/verify.html';
        },

        //个人信息
        profile(){
            return fetch('/Users/usersInfo.html');
        },

        //修改头像的密钥
        get_protrait_key() {
            return fetch('/Users/getKey.html');
        },

        //修改头像
        update_protrait(params){
            //return fetch('?user&q=api/setuser/headUpload', params, 'POST', 'pc');
            return fetch('?user&q=api/setuser/headUpload', params, 'POST', 'pc');
        },

        //是否登陆
        is_Logined() {
            return fetch('/Users/checkL.html');
        },

        login(params){
            return fetch('/Users/login.html', params,  'POST', 'mobile', 10000);
        }
        // 登录
        //export const Api_Login = API_ROOT + '/index.php?s=/Home/Users/login.html'


    }
}
